home *** CD-ROM | disk | FTP | other *** search
/ Zoom 2 / Zoom - Release 2 (1996)(Active Software)[!].iso / programming / assembly / ex4_number3 / bootblock.s < prev    next >
Encoding:
Text File  |  1992-09-02  |  1.1 KB  |  48 lines

  1.  
  2. _LVODoIO        =    -456
  3. _LVOFindResident    =    -96
  4.  
  5. READ            =    2
  6. MOTOR            =    9
  7.  
  8. bootblock:    dc.b    "DOS",0            ;DOS marker (we are bootable)
  9.         dc.l    0            ;Bootblock checksum store
  10.         dc.l    880            ;Rootblock marker (unused)
  11.  
  12. codestart:    movem.l a0-a6/d0-d7,-(sp)    ;preserve regs (IMPORTANT!)
  13.  
  14. *-------------- read blocks from disk into memory..
  15.  
  16.         move.l    4.w,a6
  17.         move.w    #READ,28(a1)        ;read command
  18. baz_length1    move.l    #10*512,36(a1)        ;length in blocks (variable)
  19. baz_start1    move.l    #$40000,40(a1)        ;load to segment adr (variable)
  20.         move.l    #2*512,44(a1)        ;prog always at block 2 onwards
  21.         jsr    _LVODoIO(a6)        ;load it
  22.  
  23.         move.w    #$83f0,$dff096        ;turn dma back on..
  24.  
  25.         move.w    #MOTOR,28(a1)        ;turn off drive motor
  26.         clr.l    36(a1)
  27.         jsr    _LVODoIO(a6)
  28.  
  29. baz_execute1    jsr    $40000            ;execute our code 
  30.         movem.l (sp)+,a0-a6/d0-d7    ;get old values back
  31.  
  32.         lea     DOSLib(pc),a1        ;enter the CLI as normal
  33.         jsr    _LVOFindResident(a6)
  34.         tst.l    d0
  35.         beq.s    boot_error
  36.  
  37.         movea.l    d0,a0
  38.         movea.l 22(a0),a0
  39.         moveq    #0,d0
  40.         rts
  41.  
  42. boot_error    moveq    #-1,d0        ;Whoops, there seems to be a problem!
  43.         rts            ;Signal error and return
  44.  
  45. DOSLib:        dc.b    "dos.library",0
  46.         even
  47.         ds.b    1024
  48.